23.9. Application Exit
23.9 应用退出
为确保ApplicationContext
在退出时被平静的(gracefully)关闭,每个SpringApplication
都会注册一个JVM的shutdown钩子,所有标准的Spring生命周期回调(比如DisposableBean
接口或@PreDestroy
注解)都能使用。
此外,如果想在SpringApplication.exit()
被调用时返回特定的退出码(exit code),这些beans可以实现org.springframework.boot.ExitCodeGenerator
接口。这个退出码之后会被传递到System.exit()
,作为状态码返回。
@SpringBootApplication
public class ExitCodeApplication {
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return () -> 42;
}
public static void main(String[] args) {
System.exit(SpringApplication
.exit(SpringApplication.run(ExitCodeApplication.class, args)));
}
}
ExitCodeGenerator
接口也可以被异常实现。当遇到这样的一个异常,Spring Boot将返回由被实现了的getExitCode()
方法提供的退出码。